Given array of n integers. Move all
minimum elements to the beginning of the array without changing the
order of others.
Input. The first line contains positive integer n (n ≤ 100).
Next line contains n integers. All
numbers do not exceed 100 by absolute value.
Output. Print the elements of updated array.
|
Sample input |
Sample output |
|
7 6 -3 -7 4
-7 -4 5 |
-7 -7 6 -3 4 -4 5 |
array
Find
the minimum element min. Move along
the array from right to left and move non-minimal elements to the right. The
part of the array that remains to the left is filled with the minimum element.
Example
Consider an example given in problem
statement.
![]()
Algorithm realization
Declare an array.
int m[101];
Read the input array. Find the minimum element min.
scanf("%d", &n);
min = 100;
for (i = 0; i < n; i++)
{
scanf("%d", &m[i]);
if (m[i] < min) min =
m[i];
}
Declare two
indices i and j. Move
through the array from right to left. If m[j]
is not equal to the minimum, then copy this number to m[i].
i = n - 1;
for (j = n - 1; j >= 0; j--)
if (m[j] != min)
{
m[i] = m[j];
i--;
}
The rest of the array elements from index 0 to i should be filled with minimum element.
while (i >= 0)
{
m[i] = min;
i--;
}
Print the
resulting array.
for (i = 0; i < n; i++)
printf("%d ", m[i]);
printf("\n");